package cn.com.zero.api.log.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author xiongxj
 * @version 1.0.0
 * @Description 日志注解
 *      Target 定义注解使用范围，ElementType.METHOD：表示只能注解在方法上；
 *      Retention 定义注解生命周期。
 *              SOURCE：注解只存在源码中，编译后丢失；
 *              CLASS 编译时放到 class 上，但运行时不适用；
 *              RUNTIME 在运行时参与运行业务。
 *              本注解在运行时参与写日志，所以使用RUNTIME。
 * @createTime 2022/7/13 13:27
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {

    /**
     * 日志类型
     *
     * @return 日志类型
     */
    int logType();

    /**
     * 日志内容；例如“添加管理员”
     *
     * @return 日志内容
     */
    String content();

    /**
     * 忽略写日志的字段
     */
    String[] ignoreFields() default {};

}
